package com.rain.cy.framework.annotation;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 分布式锁
 *
 * @Author yuanyixiong
 * @Date 2019/7/23
 **/
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DistributedLock {

    /**
     * 同时并发数量
     *
     * @return
     */
    int concurrentNumber() default 1;


    /**
     * 上锁以后leaseTime秒自动解锁
     *
     * @return
     */
    long leaseTime();


    /**
     * 尝试加锁，最多等待waitTime秒
     *
     * @return
     */
    long waitTime() default 0;


    /**
     * 时间单位，默认为秒
     */
    TimeUnit unit() default TimeUnit.SECONDS;


}
